<?php

/**
 * Vy för inloggningsfunktionalitet
 */
class LoginView {
	private static $k_username = 'username';
	private static $k_password = 'password';
	private static $k_login = 'login';
	private static $k_logout = 'logout';
	private static $k_remember = 'remember';
	private static $k_location = 'Location: ';	
	private static $k_phpSelf = 'PHP_SELF';
	
	// Returnerar HTML för inloggningsformulär
	public function DoLoginBox($failedLoginMessage = false) {
		$errorMessage = '';
		if ($failedLoginMessage) {
			$errorMessage = '<p class"error">Felaktiga inloggningsuppgifter, försök igen.</p>';
		}
		return '<div id="login">
					<form method="post">
						<h2>Logga in</h2>
						' . $errorMessage . '
						<div class="input">
							<label for="username">Användarnamn: </label>
							<input name="username" id="username" />
						</div>
						<div class="input">
							<label for="password">Lösenord: </label>
							<input type="password" name="password" id="password" />
						</div>
						<div class="input">
							<label for="remember">Kom ihåg mig </label>
							<input type="checkbox" name="remember" value="remember" />
						</div>
						
						<input type="submit" name="login" value="Logga in!" />
					</form>
				</div>';
	}
	
	// Returnerar HTML för utloggningsknapp
	public function DoLogoutBox($username) {
		return '<div id="logout">
					<p>Du är inloggad som ' . $username . '</p>
					<form method="post">
					<input type="submit" name="logout" value="Logga ut!" />
					</form>
				</div>';
	}
 
	// Returnerar användarnamnet från $_POST om det finns där, annars från $_SESSION
	public function GetUserName() {
		if (isset($_POST[self::$k_username])) {
			return $_POST[self::$k_username];
		}
		if (isset($_COOKIE[self::$k_username])) {
			return $_COOKIE[self::$k_username];
		}
		return false;
	}
	
	// Returnerar lösenordet från $_POST
	public function GetPassword() {
		if (isset($_POST[self::$k_password]) == true) {
			return $_POST[self::$k_password];
		}
		if (isset($_COOKIE[self::$k_password])) {
			return $_COOKIE[self::$k_password];
		}
	}
	
	// Kollar om det finns en cookie med användaruppgifter
	public function HasUserCookie() {
		if (isset($_COOKIE[self::$k_username]) && isset($_COOKIE[self::$k_password])) {
			return true;
		}
		return false;
	}
	
	// Sätter cookies för att komma ihåg inloggning mellan sessioner
	public function SetCookie($username, $password) {
		setcookie(self::$k_username, $username, time()+10000000);
		setcookie(self::$k_password, $password, time()+10000000);
		$_COOKIE[self::$k_username] = $username;
		$_COOKIE[self::$k_password] = $password;
	}
	
	// Indikerar om användaren valt att använda cookies för att komma ihåg inloggning
	public function UseCookie() {
		if (isset($_POST[self::$k_remember])) {
			if ($_POST[self::$k_remember] == true) {
				return true;
			}
		}
		return false;
	}
	
	public function ReloadPage() {
		session_write_close();
		header(self::$k_location . $_SERVER[self::$k_phpSelf]);		
	}
	
	// Rensar cookies
	public function ClearCookie() {
		if (isset($_COOKIE[self::$k_username])) {
			setcookie(self::$k_username, '', time()-3000);
			unset($_COOKIE[self::$k_username]);
		}
		if (isset($_COOKIE[self::$k_password])) {
			setcookie(self::$k_password, '', time()-3000);
			unset($_COOKIE[self::$k_password]);
		}
	}
	
	// Indikerar ifall användaren vill logga in
	public function TriedToLogIn() {
		return isset($_POST[self::$k_login]);
	}

	// Indikerar ifall användaren vill logga ut 
	public function TriedToLogOut() {
		return isset($_POST[self::$k_logout]);	
	}
}